perm filename TF[D,SYS] blob
sn#320792 filedate 1977-12-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE TF TAPE TEST END OF FILE
C00003 00003 SUBTTL DATA STORAGE
C00004 00004 BEGIN: CALLI 0
C00006 00005 SUBTTL READ
C00008 00006 SUBTTL WRITE
C00009 00007 SUBTTL MORE, SMALL ROUTINES
C00011 ENDMK
C⊗;
TITLE TF TAPE TEST END OF FILE
A←1
B←2
C←3
D←4
P←17
MTA←←1
PDLEN←←40
SUBTTL DATA STORAGE
PDLIST: BLOCK PDLEN
IBUF: BLOCK 3
OBUF: BLOCK 3
RECSIZ: 0 ;SIZE OF RECORD.
FIB1: 0
FIB2: 0
ERRCNT: 0 ;COUNT OF READ ERRORS
WORDNO: 0 ;WORD NUMBER ON TAPE
BEGIN: CALLI 0
MOVE P,[IOWD PDLEN,PDLIST]
INIT MTA,10
'TTT '
XWD OBUF,IBUF
JRST [OUTSTR [ASCIZ/ASSIGN THE MAG TAPE AS 'TTT' AND RESTART
/]
CALLI 12]
UINBF MTA,[2 ;MAKE 2 BUFFERS EACH
1001] ;FOR 512 DATA WORDS.
UOUTBF MTA,[2
1001]
CMDH: OUTSTR [ASCIZ/COMMANDS ARE:
W WRITE DATA
R READ DATA
U REWIND TAPE
X EXIT
2 5 8 SET DENSITY
H TYPE THIS LIST AGAIN/]
CMD: OUTSTR [ASCIZ/
*/]
TTCALL 4,A
GETSTS MTA,B
TRZ B,760000
SETSTS MTA,(B)
JRST CMD2
CMD1: TTCALL 2,A
JRST CMD
CMD2: CAIN A,15
JRST CMD1
CAIE A,12
CAIN A,175
JRST CMD
CAIL A,"A"+40
CAILE A,"Z"+40
JRST .+2
SUBI A,40
CAIN A,"H"
JRST [OUTSTR @CMDH
JRST CMD1]
CAIN A,"U"
JRST [MTAPE MTA,1
JRST CMD1]
CAIN A,"X"
CALLI 12
CAIE A,"8"
CAIN A,"2"
JRST DSET
CAIN A,"5"
JRST DSET
CAIN A,"R"
JRST READ
CAIN A,"W"
JRST WRITE
TTCALL 11,
JRST CMDH
DSET: CAIN A,"2"
MOVEI B,200
CAIN A,"5"
MOVEI B,400
CAIN A,"8"
MOVEI B,600
GETSTS MTA,A
TRZ A,600
IORI A,(B)
SETSTS MTA,(A)
JRST CMD1
SUBTTL READ
READ: PUSHJ P,GETSIZ ;GET SIZE OF TRANSFER
PUSHJ P,GENINI ;INITIALIZE GENERATOR
SETOM WORDNO ;INITIALIZE WORD INDEX
SETZM ERRCNT ;CLEAR ERROR COUNT
READ5: MOVEI A,1000
MOVEM A,FILSIZ
PUSHJ P,GENINI
READ1: PUSHJ P,GET
JRST READX ;EOF
SOSGE FILSIZ
JRST READ4 ;MISSING EOF
AOS WORDNO
PUSH P,A
PUSHJ P,GENDAT
CAME A,(P)
PUSHJ P,READ2
POP P,A
SOSLE RECSIZ
JRST READ1
OUTSTR [ASCIZ/READ DONE.
/]
CLOSE MTA, ;FLUSH FURTHER BUFFERS
SKIPG A,ERRCNT
JRST CMD1
PUSHJ P,DISDEC
OUTSTR [ASCIZ/. ERRORS DETECTED
/]
JRST CMD1
READX: SKIPE FILSIZ
JRST READXX
CLOSE MTA, ;GET RID OF EOF BITS
JRST READ5
READ4: OUTSTR [ASCIZ /MISSING EOF MARK
/]
EXIT
READXX: OUTSTR [ASCIZ/READ: UNEXPECTED END OF FILE.
/]
CLOSE MTA,
JRST CMD1
READ2: SKIPG ERRCNT
OUTSTR [ASCIZ/LOC CORE TAPE
/]
PUSH P,A
MOVE A,WORDNO
PUSHJ P,DISLOC
OUTSTR [ASCIZ/ /]
POP P,A
PUSHJ P,DISOCT
OUTSTR [ASCIZ/ /]
MOVE A,-1(P)
PUSHJ P,DISOCT
OUTSTR [ASCIZ/
/]
AOS ERRCNT
POPJ P,
SUBTTL WRITE
WRITE: PUSHJ P,GETSIZ
PUSHJ P,GENINI
MOVEI A,1000
MOVEM A,FILSIZ#
WRIT1: PUSHJ P,GENDAT
PUSHJ P,PUT
SOSG FILSIZ
JRST WRIT3
WRIT2: SOSLE RECSIZ
JRST WRIT1
CLOSE MTA, ;MAKE EOF MARK.
OUTSTR [ASCIZ/WRITE DONE.
/]
JRST CMD1
WRIT3: MTAPE MTA,3 ;WRITE EOF
MOVEI A,1000
MOVEM A,FILSIZ
PUSHJ P,GENINI
JRST WRIT2
REPEAT 1,<
GENINI: SETZM FIB1
MOVEI A,1
MOVEM A,FIB2
POPJ P,
GENDAT: MOVE A,FIB2
ADDM A,FIB1
EXCH A,FIB1
MOVEM A,FIB2
POPJ P,
>
REPEAT 0,<
GENDAT:
GENINI: MOVE A,[777777,,777777]
POPJ P,
>
SUBTTL MORE, SMALL ROUTINES
DISLOC: HRLZ A,A
MOVEI C,6
JRST OCTPNT
DISOCT: MOVEI C,14
OCTPNT: SETZ B,
ROTC A,3
ADDI B,"0"
TTCALL 1,B
SOJG C,OCTPNT
POPJ P,
DISDEC: IDIVI A,12
HRLM B,(P)
JUMPE A,.+2
PUSHJ P,DISDEC
HLRZ A,(P)
ADDI A,"0"
TTCALL 1,A
POPJ P,
PUT: SOSG OBUF+2
OUT MTA,
JRST PUT1
OUTSTR [ASCIZ/WRITE ERROR. MT STATUS = /]
GETSTS MTA,A
PUSHJ P,DISLOC
OUTSTR [ASCIZ/
/]
HALT CPOPJ
PUT1: IDPB A,OBUF+1
POPJ P,
GET: SOSG IBUF+2
IN MTA,
JRST GET1
STATZ MTA,20000
POPJ P,
OUTSTR [ASCIZ/MT DETECTED READ ERROR. STATUS = /]
GETSTS MTA,A
PUSHJ P,DISLOC
OUTSTR [ASCIZ/
/]
HALT CPOPJ1
GET1: ILDB A,IBUF+1
CPOPJ1: AOS (P)
CPOPJ: POPJ P,
GETSIZ: OUTSTR [ASCIZ/TYPE NUMBER OF WORDS TO TRANSFER: /]
SETZ B,
TTCALL 11,
GETNUM: TTCALL 4,A
CAIL A,"0"
CAILE A,"9"
JRST GETN1
IMULI B,12
ADDI B,-"0"(A)
JRST GETNUM
GETN1: MOVEM B,RECSIZ
POPJ P,
END BEGIN